Concurrently displaying multiple characters for input field positions

ABSTRACT

For each of multiple user inputs, multiple keys of a keyboard that are touched as part of the user input are identified. Additionally, for each of the multiple user inputs, multiple characters that are to be displayed concurrently are determined based on the multiple keys that are touched as part of the user input. Both a character input field and the multiple characters determined for each of the multiple user inputs are displayed. One or more suggested inputs can also be displayed, and a user-selected one of the suggested inputs identified as an input to the character input field.

BACKGROUND

As computing technology has advanced, small devices with a great deal ofcomputing power have become commonplace. While such small devices havemany advantages, including their ease of portability, they are notwithout their problems. One such problem is difficulty on the part ofusers in inputting requests to the devices. Many devices have keyboardsor keypads with very small keys, making it difficult for users to pressonly the particular key that they desire. This can lead to manyincorrect key presses by the user, and detract from the usability of thedevices.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

In accordance with one or more aspects, for each of multiple userinputs, multiple keys of a keyboard that are touched as part of the userinput are identified. For each of the multiple user inputs, multiplecharacters that are to be displayed concurrently are determined based onthe multiple keys that are touched as part of the user input. Both acharacter input field and the multiple characters determined for each ofthe multiple user inputs are displayed.

In accordance with one or more aspects, one or more suggested inputs canalso be displayed with the character input field and the multiplecharacters. A user selection of one of the suggested inputs can bereceived, and the selected suggested input identified as an input to thecharacter input field.

BRIEF DESCRIPTION OF THE DRAWINGS

The same numbers are used throughout the drawings to reference likefeatures.

FIG. 1 illustrates an example system implementing the concurrentlydisplaying multiple characters for input field positions in accordancewith one or more embodiments.

FIG. 2 illustrates an example user interface that can be displayed inaccordance with one or more embodiments of the concurrently displayingmultiple characters for input field positions.

FIGS. 3, 4, 5, 6, and 7 illustrate example user interfaces that can bedisplayed in accordance with one or more embodiments of the concurrentlydisplaying multiple characters for input field positions.

FIG. 8 is a flowchart illustrating an example process for concurrentlydisplaying multiple characters for input field positions in accordancewith one or more embodiments.

FIG. 9 is a flowchart illustrating an example process for generating acharacter list in accordance with one or more embodiments.

FIG. 10 is a flowchart illustrating an example process for implementinga suggestion list in accordance with one or more embodiments.

FIG. 11 illustrates an example computing device that can be configuredto implement the concurrently displaying multiple characters for inputfield positions in accordance with one or more embodiments.

DETAILED DESCRIPTION

Concurrently displaying multiple characters for input field positions isdiscussed herein. A character input field is displayed into which theuser can input one or more characters. In response to each user input,one or more keys that are pressed by the user as part of the input areidentified. Each character corresponding to one of these keys isdisplayed concurrently as an input option for a particular position inthe character input field. The characters displayed can be arranged in acharacter list that partially overlaps that particular position. Thecharacters can optionally be displayed in accordance with a ranking thatis based on how much each of the particular keys is touched.

In addition to displaying these character lists, an input suggestionlist can also be displayed to the user. The input suggestion listidentifies suggested words or other inputs based on the keys pressed,and can change each time the user presses one or more additional keys.The user can also select an input from the suggestion list to be theinput to the character input field.

FIG. 1 illustrates an example system 100 implementing the concurrentlydisplaying multiple characters for input field positions in accordancewith one or more embodiments. System 100 includes a computing device 102that can receive user inputs 104 and generate a user interface 106 basedon inputs 104. Computing device 102 can optionally include a displaydevice on which user interface 106 is displayed. Alternatively, thedisplay device can be separate from computing device 102 and computingdevice 102 can output signals to the display device to have the displaydevice display the user interface 106.

Computing device 102 can be a variety of different devices capable ofreceiving user inputs and generating a user interface. For example,computing device 102 can be a cellular or other wireless phone, apersonal digital assistant or handheld computer, a portable music and/orvideo playback device, a desktop computer, a mobile station, anentertainment appliance, a set-top box communicatively coupled to adisplay device, a game console, an automotive computer, and so forth.Thus, computing device 102 may range from a full resource device withsubstantial memory and processor resources (e.g., personal computers,game consoles) to a low-resource device with limited memory and/orprocessing resources (e.g., traditional set-top boxes, hand-held gameconsoles).

Computing device 102 includes a user input module 112, a user interfacedisplay module 114, a character determination module 116, and an inputsuggestion module 118. Generally, user input module 112 receives userinputs 104. Character determination module 116 generates character listseach including one or more characters based on user inputs 104.Additionally, input suggestion module 118 generates a list of one ormore suggested inputs. User interface display module 114 generates userinterface 106 based at least in part on these character lists and one ormore suggested inputs.

User input module 112 receives user inputs 104 in the form of one ormore keys of a keyboard that are pressed or touched by a user. Thekeyboard can include a variety of different characters such as letters,numbers, punctuation, other symbols, and so forth. The keyscorresponding to these various characters can be laid out in a varietyof different patterns. User inputs 104 can also include user selectionsof characters or inputs in a list, as discussed in more detail below.

In one or more embodiments, the keyboard is a “soft” keyboard in which arepresentation of a keyboard is displayed to the user and the user isable to select keys by pressing or touching representations of thosekeys on the displayed keyboard. A variety of different well-known touchinput screen or touch panel technologies can be used to display the softkeyboard and receive user inputs. Alternatively, the keyboard via whichuser input 104 is received can be a physical keyboard having multiplephysical keys that can be pressed by the user. A variety of differentwell-known technologies can be used to determine which keys are pressedby the user.

Each key on the keyboard is associated with or corresponds to onecharacter at any given time, and each user input 104 is typically anintended input of a single key by the user. However, oftentimes when theuser intends to press a single key, he or she actually presses multiplekeys. This can be due to a variety of different reasons such as thesmall size of the keys on the keyboard, lack of user focus in selectingan individual key, and so forth. The one or more keys that are pressedare received by user input module 112 as user input 104. For example,using a standard QWERTY keyboard layout, a user may intend to press the“f” key, but may actually press the “f”, “g”, “t”, and “r” keys. Thepressing of the “f”, “g”, “t”, and “r” keys is received by user inputmodule 112 as user input 104. Accordingly, user input module 112 canreceive an indication of one or more keys each time the user actuallyintends to press a single key (and thus intends to input a singlecharacter).

In situations where multiple keys are pressed as a user input 104, userinput module 112 can also optionally determine a portion of each of themultiple keys was touched. Each key on the keyboard typically has anassociated selection area, and the user presses the key by touching thatselection area. The portion of a key that is touched refers to theportion of the selection area associated with that key that was touched.For example, when intending to press the “f” key, but actually pressingthe “f”, “g”, “t”, and “r” keys, the user's finger may have touched 65%of the “f” key, 35% of the “g” key, 30% of the “t” key, and 20% of the“r” key. These percentages or portions of each of the keys that weretouched can be identified by user input module 112.

The portion of each of the multiple keys that was touched as part of auser input 104 can be identified by module 112 in a variety of differentmanners. For example, if the keyboard is a soft keyboard, then the touchinput screen technology can allow module 112 to determine specific partsof the keyboard that were touched and thus readily identify the portionof each of the multiple keys that was touched. By way of anotherexample, if the keyboard has physical keys with touch sensing technologythat allows specific portions of each individual key that was touched tobe identified, module 112 can use these specific portions to readilyidentify the portion of each of the multiple keys that was touched

Character determination module 116 receives an indication from userinput module 112 of one or more keys that were pressed as a user input104. Character determination module 116 generates a list of one or morecharacters that are to be displayed as corresponding to or beingassociated with a particular position in a character input fielddisplayed as at least part of user interface 106. Each user input 104corresponds to a different position in the character input field, andcharacter determination module 106 generates a character list for eachuser input 104. In situations where the character list includes multiplecharacters, the multiple characters are displayed concurrently ascorresponding to a particular position in the character input field.

FIG. 2 illustrates an example user interface 200 that can be displayedin accordance with one or more embodiments of the concurrentlydisplaying multiple characters for input field positions. In the exampleof FIG. 2, user interface 200 includes a soft keyboard 202 having aQWERTY layout. It is to be appreciated, however, that keyboard 202 isonly an example. Alternatively, as discussed above, a physical keyboardrather than a soft keyboard can be used, a different keyboard layout canbe used, and so forth.

User interface 200 includes a character input field or section 204.Character input field 204 is displayed to the user as a field or sectioninto which the user can input characters by pressing keys of keyboard202. It is to be appreciated that character input field 204 is anexample of an input user interface that can be used with theconcurrently displaying multiple characters for input field positionsdiscussed herein. Other input user interfaces can be displayed using theconcurrently displaying multiple characters for input field positionsdiscussed herein, such as input user interfaces that are part of a menu,input user interfaces that are an entry in a drop-down or pull-downmenu, and so forth.

The list of characters generated by character determination module 106of FIG. 1 is displayed in portion 206 of user interface 200. A differentlist of characters is displayed for each different position in characterinput field 204. Each position in character input field 204 refers to alocation where a character can be input. For example, if the user wereentering the word “top”, then the character “t” would be in a firstposition, the character “o” would be in a second position, and theletter “p” would be in a third position. In the example of FIG. 2, twocharacter lists 212 in 214 are illustrated, with character list 212corresponding to a first position in character input field 204 andcharacter list 214 corresponding to a second position in character inputfield 204. Each of these character lists in portion 206 can also bereferred to as a “letter stack”.

In the example of FIG. 2, one character in each character list displayedin portion 206 is displayed as being in character input field 204 at theposition corresponding to the character list. The remaining charactersin each character list are displayed adjacent to the positioncorresponding to the character list.

User interface 200 also includes an input suggestion list portion 208 inwhich one or more suggested inputs are displayed. The generation and useof the input suggestion list is discussed in more detail below.

Additionally, as discussed in more detail below, a user is able toselect a particular character within a character list in portion 206and/or a particular suggested input in input suggestion list portion208. Portions 206 and 208 are displayed as part of (or corresponding to)a touch input screen. Characters and suggested inputs displayed inportions 206 and 208 respectively are typically displayed larger and/orwith more surrounding space than the keys in keyboard 202. Additionally,the selection areas on the touch input screen of user interface 200corresponding to these characters and suggested inputs displayed inportions 206 and 208 can be larger than the selection areas of the keysin keyboard 202. This allows a user to more easily select a singlecharacter or a single suggested input in portion 206 or 208.

In the example of FIG. 2, character input field 204 is displayed as ahorizontal input field, each character list in portion 206 is displayedas a vertical column of characters, and the input suggestion list inportion 208 is displayed as a vertical column of input suggestions.Alternatively, other display configurations can be used. For example,character input field 204 can be displayed as a vertical input field,each character list in portion 206 can be displayed as a horizontal rowof characters, and the input suggestion list in portion 208 can bedisplayed as a horizontal row of input suggestions.

Additionally, in the example of FIG. 2, portion 208 is displayed asbeing adjacent to character input field 204. Alternatively, portion 208can be displayed in other locations further away from character inputfield 204. Similarly, each character list in portion 206 is displayed asbeing partially overlapping character input field 204. Alternatively,portion 206 can be displayed without overlapping character input field204, such as adjacent to character input field 204, close to the softkeyboard to reduce finger movement by the user, or in other locationsfurther away from character input field 204.

Returning to FIG. 1, character determination module 116 generates, foreach position in the character input field, a character list includingone or more characters that are to be displayed as being associated withthat position. The characters included in the character list are thecharacters identified by user input module 112 as having been pressed ortouched as part of a user input 104.

The order of characters in the character list can be determined bymodule 116 in a variety of different matters. In one or moreembodiments, the order of characters is in accordance with a ranking ofthe characters that is generated based on the portions of each of themultiple keys that were touched as the user input 104. Charactersassociated with keys having a larger portion touched are ranked higherthan characters associated with keys having a smaller portion touched.As an example, following the example above where the user's fingertouched 65% of the “f” key, 35% of the “g” key, 30% of the “t” key, and20% of the “r” key, the characters are ranked in the following order:“f”, “g”, “t”, “r”, with the character “f” being the highest rankingcharacter. The highest ranking character is displayed at the top orfront of the character list, which in the example of FIG. 2 is thecharacter in the character list displayed in character input field 204.If equal portions of two or more different characters are touched, thenthese two or more different characters can be ranked in other manners,such as alphabetically, randomly, etc.

Alternatively, rather than using this ranking, the order of charactersin the character list can be determined by module 116 in other matters.For example, the order of characters can be determined alphabetically,according to general common usage of characters, according to commonusage of characters on computing device 102, randomly, according toother rules or criteria, and so forth.

In one or more embodiments, character determination module 106 includesin a character list corresponding to a particular position, all of thecharacters associated with the multiple keys touched as part of the userinput 104. Alternatively, the number of characters included in acharacter list can be limited to a threshold number of characters. Thisthreshold number of characters can be determined in a variety ofdifferent manners, such as based on available display space in the userinterface, being set as a default number provided by a developer orseller of computing device 102, being set as a number requested by auser of computing device 102, according to other rules or criteria, andso forth.

In embodiments where a character list is limited to a threshold numberof characters, if the number of keys touched exceeds this thresholdnumber then the particular characters included in the character list canbe identified in a variety of different manners. For example, thecharacters included in the character list can be determined inaccordance with the ordering of characters in the character listdiscussed above. As a specific example, if the threshold number ofcharacters is three and the characters in the character list aredetermined by module 116 to have an order of “f”, “g”, “t”, “r”, thenthe characters in the character list would be “f”, “g”, “t”.

Additionally, a user input 104 can be a selection of a character in acharacter list generated by character determination module 116. Inresponse to such a user input 104, user input module 112 or characterdetermination module 116 identifies the particular character that isselected based on the user input. For example, the location of a touchinput screen can be received as user input 104, and module 112 or 116can determine the particular character in the character list that isdisplayed at that location.

The selection areas for the characters in the character lists can belarger than the selection areas of the keys on the keyboard, so a singlecharacter in a character list can typically be easily selected by auser. The selection areas for characters in the character lists can belarger than the selection areas of the keys on the keyboard in one ormore dimensions and/or directions. For example, the selection areas forcharacters in the character lists can be wider in one or more directionsand/or longer in one or more directions than the selection areas of thekeys on the keyboard. Additionally, the spacing between characters inthe characters lists can be increased so that the spacing between twocharacters in a character list is greater than the spacing between twokeys on the keyboard, allowing a user to more easily select a singlecharacter in the character list.

In response to a user selection of a character in a character listgenerated by character determination module 116, module 116 alters thecharacter list to include only the user selected character. Othercharacters that were previously in that character list are removed fromthe character list and only the user selected character is displayed.

Additionally, in one or more embodiments character determination module116 determines the characters to include in a particular character listbased at least in part on previously generated character lists that arebeing displayed. For example, referring to FIG. 2, the characters inlist 214 can be determined by module 116 based at least in part on thecharacters in list 212. Character determination module 116 makes thisdetermination by combining the characters in the previous character listor lists with the possible characters in the character list currentlybeing determined by module 116. These characters are combined in thesame order as their corresponding positions in the character inputfield. Each possible combination is compared to inputs in an inputlibrary in the combinations that do not form a valid input from theinput library have the corresponding character removed from thecharacter list by module 116.

It should be noted, however, that situations may arise where the user isintentionally entering a string of characters that do not form a validinput in the input library. Accordingly, character determination module116 can be configured to have a character removed from the characterlist if it does not form a valid input from the input library, oralternatively can be configured to ignore such situations and not removethe character from the character list. This configuration of module 116can optionally be a user-configurable setting, allowing the user to seta preference as to whether module 116 should or should not remove acharacter in such situations. Alternatively, such situations can bemanaged in different manners, such as by module 116 not removing thehighest ranked character in a character list regardless of whether itcan be combined to form a valid input from the input library, butremoving lower-ranked characters if they cannot be combined to form avalid input from the input library.

For example, assume that character determination module 116 isconfigured to allow removal of a character from a character list thatcannot be combined with characters from the other character list orlists to form a valid input from the input library. Further assume afirst character list includes characters “g”, “t”, and “f”, and the nextuser input 104 includes the user pressing keys “w” and “e”. The variouscombinations are “gw”, “tw”, “fw”, “ge”, “te”, and “fe”. Further assumethat the input library includes no inputs that begin with “gw”, “tw”, or“fw”. Accordingly, in this example the character “w” can be removed fromthe character list as it does not combine with the characters from thefirst character list to form a valid input from the input library.However, if module 116 were configured so that the highest rankedcharacter in a character list is not to be removed, then if “w” were thehighest ranked character in the character list with “w” and “e”, then“w” would not be removed from the character list.

Alternatively, rather than determining characters in a character listcurrently being generated based on one or more previously generatedcharacter lists, one or more characters in a previously generatedcharacter list or lists can be removed based on characters in acharacter list currently being generated. For example, assume a firstcharacter list includes characters “q”, “w”, and “s”, and the next userinput 104 includes the user pressing keys “t” and “g”. The variouscombinations are “qt”, “wt”, “st”, “qg”, “wg”, and “sg”. Further assumethat the input library includes no inputs that begin with “qt” or “qg”.Accordingly, in this example the character “q” can be removed from thefirst character list as it does not combine with the characters from thesecond character list to form a valid input from the input library.However, if module 116 were configured so that the highest rankedcharacter in a character list is not to be removed, then if “q” were thehighest ranked character in the character list with “q”, “w”, and “s”,then “q” would not be removed from the character list.

The input library can be determined in a variety of different manners.For example, the input library can be one or more of a dictionary ofcommon words, a dictionary of all words in a particular language, alisting of character strings commonly input by a user of device 102, alisting of character strings previously entered by a user of device 102,an address book or e-mail address book, and so forth.

Input suggestion module 118 identifies one or more suggested inputs(also referred to as input suggestions) to be displayed as part of userinterface 106. In the example of FIG. 2, these suggested inputs aredisplayed in input suggestion list portion 208. Module 118 identifiessuggested inputs based at least in part on the characters in thecharacter lists generated by character determination module 116. As thecharacters in the character lists change, such as due to user inputs 104of characters corresponding to additional positions in the characterinput field and/or user selection of characters in a character listcorresponding to a position in the character input field, module 118re-identifies the suggested inputs to be displayed as part of userinterface 106.

A user input 104 can be a selection of a suggested input in the listgenerated by input suggestion module 118. In response to such a userinput 104, user input module 112 or input suggestion module 118identifies the particular suggested input that is selected based on userinput. For example, the location of a touch input screen can be receivedas user input 104, and module 112 or 118 can determine the particularsuggested input in the list that is displayed at that location. Inresponse to a user selection of a suggested input, the selected input isused as the input to the character input field (e.g., field 204 of FIG.2). As discussed above, the selection areas for suggested inputs in thesuggested input list can be larger than the selection areas of the keyson the keyboard, so a single suggested input in the suggested input listcan typically be easily selected by a user.

It should be noted that the selection areas for suggested inputs can belarger than the selection areas of the keys on the keyboard in one ormore dimensions and/or directions. For example, the selection areas forsuggested inputs can be wider in one or more directions and/or longer inone or more directions than the selection areas of the keys on thekeyboard. Additionally, the spacing between inputs in the suggestedinput list can be increased so that the spacing between two inputs inthe suggested input list is greater than the spacing between two keys onthe keyboard.

Input suggestion module 118 can generate an input suggestion list in avariety of different manners. In one or more embodiments, an inputlibrary is accessed to identify input suggestions based on thecharacters in the character lists being displayed. This input librarycan be determined in a variety of different manners, as discussed above.Additionally, the input library used by module 118 can be the same inputlibrary, or alternatively a different input library, than the inputlibrary used by module 116 discussed above.

In one or more embodiments, input suggestion module 118 follows aparticular set of rules or criteria in determining the input suggestionsto include in the input suggestion list. For example, input suggestionmodule 118 can use the following rules to prioritize input suggestionsand determine their placement in the input suggestion list (withhigher-prioritized input suggestions being placed higher in the listthan lower-prioritized input suggestions): inputs having the same numberof characters as positions have been filled in the character input fieldhave higher priority than inputs with more characters; and inputs withhigher ranked characters have higher priority than inputs with lowerranked characters. Thus, in this example, if there have been two userinputs so far, corresponding to first and second positions in thecharacter input field, then two-character inputs in the input librarythat match the characters in the character lists corresponding to thosepositions have higher priority than inputs with three or morecharacters. Additionally, continuing this example, inputs in the inputlibrary having higher-ranked characters in the character lists havehigher priority than inputs having lower-ranked characters in thecharacter lists.

A character position in the character input field is filled if one ormore characters have already been entered for that character position. Acharacter list including multiple characters can correspond to thischaracter position, and the particular character for that characterposition may or may not yet be known.

By way of example, assume that the first character list includescharacters ranked in the order “b”, “g”, “h”, and a second characterlist includes characters ranked in the order “e”, “r”. As two positionsin the character input field have been filled so far, two-characterinputs in the input library are given higher priority. Assuming that theinput library includes input words of “be” and “he”, then these twoinputs are given highest priority as they have the same number ofcharacters as have been filled in the character input field.Additionally, “be” is ranked higher than “he” because “b” is rankedhigher than “h”. If additional inputs are included in the inputsuggestion list, these additional inputs are selected based on thenumber of characters in the inputs (with shorter inputs being favoredover longer inputs to keep the character count as close to two aspossible) and the ranking of the characters in the character lists.Accordingly, three-character inputs in the input library beginning with“be” are given higher priority. Assuming that the input library includesan input word of “bee”, then the word “bee” is given the next highestpriority after “be” and “he”.

The rankings of characters across character lists can be managed in avariety of different manners. In one or more embodiments, characters inthe character list corresponding to the first position of the characterinput field are given higher priority than characters in the characterlist corresponding to the second position of the character input field,characters in the character list corresponding to the second position ofthe character input field are given higher priority than characters inthe character list corresponding to the third position of the characterinput field, and so forth. For example, if the first character listincludes characters ranked in the order “b”, “g”, “h”, and the secondcharacter list includes characters ranked in the order “i”, “e”, theword “be” would be given higher priority in the suggestion list than theword “hi”, because the character “b” in the first character list isgiven priority over the letter “i” in the second character list.

Alternatively, the rankings of characters across character lists can bemanaged in other manners, such as based on portions of keys that wereactually touched (e.g., these portions can be maintained by computingdevice 102), randomly, according to other rules or criteria, and soforth.

In one or more embodiments, input suggestion module 118 is limited to athreshold number of inputs. This threshold number of inputs can bedetermined in a variety of different manners, such as based on availabledisplay space in the user interface, being set as a default numberprovided by a developer or seller of computing device 102, being set asa number requested by a user of computing device 102, according to otherrules or criteria, and so forth.

Alternatively, input suggestion module 118 can determine the inputsuggestions to include in the input suggestion list in differentmanners. For example, the input suggestions can be determinedalphabetically, according to general common usage of inputs, accordingto common usage of inputs on computing device 102, according to mostrecently used inputs on device 102, according to grammar rules,randomly, according to other rules or criteria, and so forth.

Additionally, input suggestion module 118 can impose a lower thresholdon the number of characters that have been filled in the character inputfield, and does not generate an input suggestion list until the lowerthreshold number of characters have been filled in the character inputfield. For example, module 118 can impose a lower threshold of twocharacters, so that no input suggestion list is generated until at leasttwo characters in the character input field have been filled in.

Furthermore, the order of the input suggestions displayed in the inputsuggestion list can be determined in a variety of different manners. Inone or more embodiments, the display order of the input suggestions isbased on the rankings of the characters in the character lists, withinputs having higher ranked characters being given priority (e.g.,displayed higher, or alternatively lower, in the suggestion list) thanlower ranked characters. Alternatively, the display order of the inputsuggestions can be determined in other manners, such as alphabetically,according to general common usage of the inputs, according to commonusage of the inputs on computing device 102, according to most recentlyused inputs on device 102, randomly, according to other rules orcriteria, and so forth.

Additionally, it should be noted that the input suggestions in the inputsuggestion list can change in response to user selection of a characterin a character list. Any input suggestion in the input suggestion listhaving a non-selected character in a position corresponding to thatposition in the character input field is removed from the inputsuggestion list. For example, if the character list corresponding to thefirst position in the character input field includes the characters “b”,“g”, and “h”, and the user selects the “g” character from that characterlist, then any input suggestions in the input suggestion list having afirst character of “b” or “h” are removed from the input suggestionlist. By way of another example, if the character list corresponding tothe fifth position in the character input field includes the characters“@”, “#”, and “w”, and the user selects the “@” character from thatcharacter list, then any input suggestions in the input suggestion listhaving a fifth character of “#” or “w” are removed from the inputsuggestion list.

As a more specific example, assume that a user intends to type in theword “beautiful” in a character input field. FIGS. 3, 4, and 5 helpillustrate this example, showing example user interfaces that can bedisplayed in accordance with one or more embodiments of the concurrentlydisplaying multiple characters for input field positions.

The first key the user intends to press is the “b” key, but the useractually touches the “b”, “g”, and “h” keys. Also, assume that a lowerthreshold of two is imposed on the number of character positions filledin the character input field. User interface 300 of FIG. 3 illustratesthe result, with a character list corresponding to the first position inthe character input field including the characters “b”, “g”, and “h”. Inuser interface 300, no input suggestion list is displayed as only onecharacter position has been filled in and the lower threshold of two hasnot met.

The second key the user intends to press is the “e” key, but the useractually touches the “e”, “r”, and “d” keys. However, assume that thecharacter “d” cannot be combined with any of the characters “b”, “g”,and “h” to form part of a word in the input library. Therefore, thecharacter “d” can be removed from the character list corresponding tothe second position. User interface 400 of FIG. 4 illustrates theresults, with the character list corresponding to the first position inthe character input field including the characters “b”, “g”, and “h”,and the character list corresponding to the second position in thecharacter input field including the characters “e” and “r”.

As the lower threshold of two imposed on the number of characterpositions filled in the character input field has now been met, an inputsuggestion list is now displayed. This input suggestion list includesthe words “be”, “he”, and “bee”.

The third key the user intends to press is the “a” key, but the useractually touches the “a”, “s”, and “z” keys. User interface 500 of FIG.5 illustrates the results, with a character list corresponding to thefirst position in the character input field including the characters“b”, “g”, and “h”, the character list corresponding to the secondposition in the character input field including the characters “e” and“r”, and the character list corresponding to the third position in thecharacter input field including the characters “a”, “s”, and “z”. Aninput suggestion list including the words “beat”, “bran”, and “gear” isalso displayed.

A display of character lists corresponding to positions in the characterinput field and the input suggestion list continue in a like manner asthe user presses additional keys.

It is to be appreciated that, in the examples of FIGS. 3-5, the user canoptionally select a character in a character list corresponding to aposition in the character input field or an input in the inputsuggestion list. For example, if the user were actually intending toenter the word “bran”, then the user can touch the word “bran” in theinput suggestion list of user interface 500, causing the word “bran” tobe used as the input to the character input field. The character listsand input suggestion list can then be removed from the user interfacebecause the input to the character input field is completed.Alternatively, in order to accommodate the user inputting multiplewords, the character lists and input suggestion list can continue to bedisplayed until the user indicates completion of user inputs. The usercan indicate completion of user inputs in different manners, such as bypressing the spacebar, by pressing an arrow key, by pressing an “enter”key, and so forth. The particular key or keys that can be pressed toindicate completion of user inputs can optionally be a user-configurablesetting. By way of another example, the user could also touch the letter“b” in the character list corresponding to the first position in thecharacter input field of user interface 400, causing the letters “g” and“h” to be removed from that character list and the word “he” to beremoved from the input suggestion list. Optionally, in such a situationa different word beginning with “be” or “br” could be added to the inputsuggestion list.

From the discussions and examples included herein, it can be seen thatthe user can press keys to enter his or her desired input withoutneeding to be overly concerned with backspacing or deleting incorrectkey presses. The user can select characters from the character listscorresponding to particular positions of the character input field tospecify which of multiple keys was intended to be pressed. Additionally,the user can continue typing until his or her desired input is displayedin the input suggestion list.

As discussed above, the selection areas of the characters in thecharacter list and the suggested inputs in the input suggestion list canbe larger in one or more directions. The size and directions in whichthe selections areas can be larger can vary, and can optionally dependon available space in the user interface. The available space can belimited, for example, by other character lists, by other parts of thesuggestion list, by the soft keyboard, and so forth. Furthermore,additional spacing can be used between characters in the character listand/or suggested inputs in the input suggestion list, allowing a user tomore easily select a single character in the character list and/or asingle suggested input in the input suggestion list.

FIG. 6 shows an example user interface that can be displayed inaccordance with one or more embodiments of the concurrently displayingmultiple characters for input field positions. User interface 600 ofFIG. 6 is similar to user interface 400 of FIG. 4, except that thecharacter lists have been illustrated with dashed lines representing theselection areas for the characters in the character list. As can be seenin user interface 600, the selection areas of the “g” and “h” charactersare larger in the left direction and the selection area of the “r”character is larger in the right direction as there is sufficient spacein the user interface to extend those selection areas in that direction.However, there is insufficient space to extend the selection areas forthe “b”, “e” and “r” characters in the left direction, so thoseselection areas are not extended. Similarly, there is insufficient spaceto extend the selection areas for the “b”, “g”, “h”, and “e” charactersin the right direction, so those selection areas are not extended.Alternatively, the selection area of the “h” character could be largerin the right direction and/or the selection area of the “r” charactercould be larger in the down direction.

Alternatively, additional spacing between the “b” and “g” characters,between the “g” and “h” characters, and between the “e” and “r”characters could be included. Thus, even though the selection areas forsome of the characters may not be able to be extended in one or moredirections, the additional vertical spacing can allow a user to moreeasily select a single character or a single suggested input.

FIG. 7 shows another example user interface that can be displayed inaccordance with one or more embodiments of the concurrently displayingmultiple characters for input field positions. User interface 700 ofFIG. 7 is similar to user interface 500 of FIG. 5, except that thecharacter lists have been illustrated with dashed lines representing theselection areas for the characters in the character list. As can be seenin user interface 700, the selection areas of the “g” and “h” charactersare larger in the left direction and the selection areas of the “s” and“z” characters are larger in the right direction as there is sufficientspace in the user interface to extend those selection areas in thatdirection. However, there is insufficient space to extend the selectionareas for the “b”, “e”, “r”, “a”, “s”, and “z” characters in the leftdirection, so those selection areas are not extended. Similarly, thereis insufficient space to extend the selection areas for the “b”, “g”,“h”, “e”, “r”, and “a” characters in the right direction, so thoseselection areas are not extended. Alternatively, the selection area ofthe “h” character could be larger in the right direction, the selectionarea of the “r” character could be larger in the down direction, and/orthe selection area of the “z” character could be larger in the leftdirection.

Alternatively, additional spacing between the “b” and “g” characters,between the “g” and “h” characters, between the “e” and “r” characters,between the “a” and “s” characters, and between the “s” and “z”characters could be included. Thus, even though the selection areas forsome of the characters may not be able to be extended in one or moredirections, the additional vertical spacing can allow a user to moreeasily select a single character or a single suggested input.

It should also be noted that, as can be seen from the examples of FIGS.6 and 7, the selection areas for characters in character lists and/orsuggested inputs in input suggestion lists can change as additional userinputs are received. For example, the selection area for the character“r” is larger in user interface 600 of FIG. 6 than in user interface 700of FIG. 7, as the additional character list displayed in user interface700 prevents the selection area for the character “r” from being largerin the right direction.

FIG. 8 is a flowchart illustrating an example process 800 forconcurrently displaying multiple characters for input field positions inaccordance with one or more embodiments. Process 800 is carried out by adevice, such as computing device 102 of FIG. 1, and can be implementedin software, firmware, hardware, or combinations thereof. Process 800 isan example process for concurrently displaying multiple characters forinput field positions; additional discussions of concurrently displayingmultiple characters for input field positions are included herein withreference to different figures.

In process 800, a user input is received (act 802). This user input canbe one or more keys that are pressed to input a character for aparticular position in the character input field, the selection of acharacter in a character list corresponding to a particular position inthe character input field, or selection of a suggested input in asuggestion list.

If the user input is one or more keys that are pressed to input acharacter for a particular position in the character input field, then acharacter list corresponding to that position is generated (act 804).This character list that is generated includes one or more charactersbased on one or more keys that are touched by the user as discussedabove. A suggestion list including one or more input suggestions is alsooptionally generated (act 806). The entries in the suggestion list aredependent on the characters in the character lists corresponding topositions in the character input field that have been generated asdiscussed above. Process 800 then returns to act 802 to receive anotheruser input.

If the user input is selection of a character in a character listcorresponding to a particular position in the character input field,then non-selected characters are removed from that character list (act808). Other character lists are also optionally updated as appropriate(act 810). As discussed above, other character lists corresponding toother positions in the character input field can be updated by havingcharacters removed that do not form valid inputs based on an inputlibrary. A suggestion list that is displayed is also optionally updatedas appropriate (act 812). As discussed above, removing characters fromone or more character lists can result in a change in the suggestedinputs that are included in the suggestion list. Process 800 thenreturns to act 802 to receive another user input.

If the user input is selection of a suggested input in a suggestionlist, then the selected suggestion input is identified as the input tothe character input field (act 814). Process 800 can then end.Alternatively, after act 814 process 800 can return to act 802 toreceive another user input.

In one or more embodiments, process 800 also supports a “terminate” or“exit” option for the user to indicate completion of user inputs. Thus,rather than completing input into the character input field, the usercan exit process 800 by selecting this terminate or exit option (e.g.,by pressing a spacebar, by pressing an arrow key, etc.).

FIG. 9 is a flowchart illustrating an example process 900 for generatinga character list in accordance with one or more embodiments. Process 900is carried out by a device, such as computing device 102 of FIG. 1, andcan be implemented in software, firmware, hardware, or combinationsthereof. Process 900 is an example process for generating a characterlist; additional discussions of generating a character list are includedherein with reference to different figures.

In process 900, a character input field is displayed (act 902). A userinput for a position of the character input field is received (act 904).As discussed above, this user input is received by the user pressing ortouching one or more keys of a keyboard.

One or more keys that are pressed as part of the user input areidentified (act 906). Process 900 then proceeds based on whether theuser input is a single key that was touched (act 908). If the user inputwas a single key that was touched, then the character for that singlekey is displayed in the position of the character input field (acts910). Process 900 then returns to act 904 to receive another user inputfor another position of the character input field.

However, if the user input is two or more keys that were touched, thenmultiple characters to be displayed in a character list corresponding tothe position of the character input field are determined (acts 912). Themultiple characters determined in act 912 are concurrently displayed inthe character list corresponding to that position (acts 914). Process900 then returns to act 904 to receive another user input for anotherposition of the character input field.

FIG. 10 is a flowchart illustrating an example process 1000 forimplementing a suggestion list in accordance with one or moreembodiments. Process 1000 is carried out by a device, such as computingdevice 102 of FIG. 1, and can be implemented in software, firmware,hardware, or combinations thereof. Process 1000 is an example processfor implementing a suggestion list; additional discussions ofimplementing a suggestion list are included herein with reference todifferent figures.

In process 1000, one or more suggested inputs are identified (act 1002).As discussed above, the identification of these one or more suggestedinputs is based on the characters displayed in the character listscorresponding to positions in the character input field.

The one or more suggested inputs identified in act 1002 are displayed ina suggestion list (act 1004). Process 1000 then proceeds based onwhether additional user input is received for a position of thecharacter input field (act 1006). If an additional user input isreceived (e.g., one or more keys of a keyboard are pressed), thenprocess 1000 returns to act 1002 to identify one or more suggestedinputs for the suggestion list.

If an additional user input is not received, then process 1000 proceedsbased on whether user selection of a suggested input is received (act1008). If a user selection of a suggested input is received, then theselected suggested input is identified as the input to the characterinput field (act 1010). However, if user selection of a suggested inputis not received then process 1000 continues, waiting for an additionaluser input or user selection of a suggested input. Alternatively,process 1000 can also return to act 1002 to identify one or moresuggested inputs for the suggestion list if a character in a characterlist corresponding to a position in the character input field isselected as discussed above. Additionally, a user may also optionallyquit out of process 1000 by selecting a terminate or exit option.

FIG. 11 illustrates an example computing device 1100 that can beconfigured to implement the concurrently displaying multiple charactersfor input field positions in accordance with one or more embodiments.Computing device 1100 can be, for example, computing device 102 of FIG.1.

Computing device 1100 includes one or more processors or processingunits 1102, one or more computer readable media 1104 which can includeone or more memory and/or storage components 1106, one or moreinput/output (I/O) devices 1108, and a bus 1110 that allows the variouscomponents and devices to communicate with one another. Computerreadable media 1104 and/or one or more I/O devices 1108 can be includedas part of, or alternatively may be coupled to, computing device 1100.Bus 1110 represents one or more of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, a processor or local bus, and so forth usinga variety of different bus architectures. Bus 1110 can include wiredand/or wireless buses.

Memory/storage component 1106 represents one or more computer storagemedia. Component 1106 can include volatile media (such as random accessmemory (RAM)) and/or nonvolatile media (such as read only memory (ROM),Flash memory, optical disks, magnetic disks, and so forth). Component1106 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.)as well as removable media (e.g., a Flash memory drive, a removable harddrive, an optical disk, and so forth).

The techniques discussed herein can be implemented in software, withinstructions being executed by one or more processing units 1102. It isto be appreciated that different instructions can be stored in differentcomponents of computing device 1100, such as in a processing unit 1102,in various cache memories of a processing unit 1102, in other cachememories of device 1100 (not shown), on other computer readable media,and so forth. Additionally, it is to be appreciated that the locationwhere instructions are stored in computing device 1100 can change overtime.

One or more input/output devices 1108 allow a user to enter commands andinformation to computing device 1100, and also allows information to bepresented to the user and/or other components or devices. Examples ofinput devices include a keyboard, a cursor control device (e.g., amouse), a microphone, a scanner, and so forth. Examples of outputdevices include a display device (e.g., a monitor or projector),speakers, a printer, a network card, and so forth.

Various techniques may be described herein in the general context ofsoftware or program modules. Generally, software includes routines,programs, objects, components, data structures, and so forth thatperform particular tasks or implement particular abstract data types. Animplementation of these modules and techniques may be stored on ortransmitted across some form of computer readable media. Computerreadable media can be any available medium or media that can be accessedby a computing device. By way of example, and not limitation, computerreadable media may comprise “computer storage media” and “communicationsmedia.”

“Computer storage media” include volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules, or other data. Computer storage mediainclude, but are not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputer.

“Communication media” typically embody computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as carrier wave or other transport mechanism. Communicationmedia also include any information delivery media. The term “modulateddata signal” means a signal that has one or more of its characteristicsset or changed in such a manner as to encode information in the signal.By way of example, and not limitation, communication media include wiredmedia such as a wired network or direct-wired connection, and wirelessmedia such as acoustic, RF, infrared, and other wireless media.Combinations of any of the above are also included within the scope ofcomputer readable media.

Generally, any of the functions or techniques described herein can beimplemented using software, firmware, hardware (e.g., fixed logiccircuitry), manual processing, or a combination of theseimplementations. The term “module” as used herein generally representssoftware, firmware, hardware, or combinations thereof. In the case of asoftware implementation, the module represents program code thatperforms specified tasks when executed on a processor (e.g., CPU orCPUs). The program code can be stored in one or more computer readablememory devices, further description of which may be found with referenceto FIG. 11. The features of the concurrently displaying multiplecharacters for input field positions techniques described herein areplatform-independent, meaning that the techniques can be implemented ona variety of commercial computing platforms having a variety ofprocessors.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

1. A method implemented in a computing device, the method comprising:receiving a first user input via a keyboard; identifying multiple keysof the keyboard that are touched as part of the first user input;determining multiple characters based on the multiple keys that aretouched as part of the first user input; and concurrently displaying, ina character list corresponding to a first position of an input field ofa display, the multiple characters.
 2. A method as recited in claim 1,further comprising: receiving a second user input via the keyboard;identifying additional multiple keys of the keyboard that are touched aspart of the second user input; determining additional multiplecharacters based on the additional multiple keys that are touched aspart of the second user input; and concurrently displaying, in acharacter list corresponding to a second position of the input field,the additional multiple characters.
 3. A method as recited in claim 2,the determining additional multiple characters comprising: determiningone or more characters corresponding to the additional multiple keysthat are touched as part of the second user input; determining a firstcharacter of the one or more characters that cannot be combined with atleast one of the multiple characters based on the multiple keys that aretouched as part of the first user input to generate at least part of aninput included in an input library; and removing the first characterfrom the additional multiple characters.
 4. A method as recited in claim1, further comprising displaying, with the character list and the inputfield, one or more suggested inputs based at least in part on themultiple characters.
 5. A method as recited in claim 4, furthercomprising: receiving a user selection of a character in the characterlist; removing non-selected characters from the character list; andremoving, from the one or more suggested inputs, each suggested inputhaving a non-selected character in a position corresponding to the firstposition of the input field.
 6. A method as recited in claim 4, furthercomprising continuing displaying the character list until a userselection of one of the one or more suggested inputs is received.
 7. Amethod as recited in claim 1, further comprising: assigning, to each ofthe multiple characters, a ranking based on a portion of the one of themultiple keys associated with the character that was touched; anddisplaying the multiple characters in the character list according tothe rankings of the multiple characters.
 8. A method as recited in claim7, further comprising determining an ordering of multiple suggestedinputs based at least in part on the rankings of the multiplecharacters.
 9. A method as recited in claim 1, wherein each of themultiple characters in the character list has a selection area largerthan a selection area of the key of the keyboard associated with thecharacter.
 10. A method as recited in claim 1, wherein spacing betweeneach of the multiple characters in the character list is greater thanspacing between two keys on the keyboard.
 11. A device comprising: auser input module to identify, for each of multiple user inputs,multiple keys of a keyboard that are touched as part of the user input;a character determination module to determine, for each of the multipleuser inputs, multiple characters that are to be displayed concurrentlybased on the multiple keys that are touched as part of the user input;and a user interface display module to display both a character inputfield and the multiple characters determined for each of the multipleuser inputs.
 12. A device as recited in claim 11, wherein the characterdetermination module is further to: determine a first one or morecharacters corresponding to multiple keys that are touched as part of afirst user input; determine a second one or more characterscorresponding to multiple keys that are touched as part of a second userinput; determine a first character of the second one or more charactersthat cannot be combined with at least one of the first one or morecharacters to generate at least part of an input included in an inputlibrary; and remove the first character from the second one or morecharacters.
 13. A device as recited in claim 11, further comprising aninput suggestion module to identify one or more input suggestions basedat least in part on the multiple characters determined for each of themultiple user inputs, and wherein the user interface display module isfurther to display the one or more input suggestions with the characterinput field and the multiple characters determined for each of themultiple user inputs.
 14. A device as recited in claim 13, wherein theuser input module is further to receive a user selection of one of themultiple characters displayed corresponding to a position of thecharacter input field, wherein the character determination module isfurther to remove non-selected characters from the multiple charactersdisplayed corresponding to the position of the character input field,and wherein the input suggestion module is further to remove, from theone or more input suggestions, each input suggestion having anon-selected character in a position corresponding to the position ofthe character input field.
 15. A device as recited in claim 13, whereinthe user interface display module is to continue displaying the multiplecharacters determined for each of the multiple user inputs until a userselection of one of the one or more input suggestions is received.
 16. Adevice as recited in claim 11, wherein for each of the multiple userinputs, the character determination module is further to assign, to eachof the multiple characters for the user input, a ranking based on aportion of the one of the multiple keys associated with the characterthat is touched as the user input, and the user interface display moduleis further to display the multiple characters according to the rankingsof the multiple characters.
 17. A device as recited in claim 16, furthercomprising an input suggestion module to determine an ordering ofmultiple suggested inputs based at least in part on the rankings of themultiple characters.
 18. A device as recited in claim 11, wherein theuser interface display module is further to display each of the multiplecharacters with a selection area larger than a selection area of the keyof the keyboard associated with the character.
 19. A device as recitedin claim 11, wherein the keyboard comprises a touch input screen.
 20. Acomputer storage media having stored thereon multiple instructions that,when executed by one or more processors of a device, cause the one ormore processors to: display a character input field; determine, for eachof multiple user inputs, multiple characters that are to be displayedconcurrently based on multiple keys that are touched as part of the userinput; display, in a first portion partially overlapping the characterinput field, the multiple characters; identify, based on the multiplecharacters of the multiple user inputs, one or more suggested inputs;display, adjacent the character input field, the one or more suggestedinputs; receive a user selection of one of the one or more suggestedinputs; and identify the selected one suggested input as an input to thecharacter input field.